/**
 * 通用js方法封装处理
 * Copyright (c) 2019 MiloLee
 * 使用方法:$.common.isEmpty(value)
 * @See dialogs:弹框封装
 * @See validate:正则校验
 * @See string:字符串操作
 * @See date:日期操作
 * @See image:图片操作
 * @See file:文件操作
 */
(function ($) {
    $.extend({
        //弹框封装处理
        dialogs: {
            //打开加载框
            openLoading: function () {
                $("#wap_pop").show();
            },
            //关闭加载框
            closeLoading: function () {
                $("#wap_pop").hide();
            },
            //打开提示框[只有确认框]
            openToolTip: function (value) {
                $("#wap_pop").hide();
                $(".popText").text(value);
                $(".popItems").show();
            },
            //打开提示框[关闭框和确认框]
            openToggleButtonToolTip: function (text,href) {
                $(".popText").text(text);
                $(".popClose").attr("href", href);
                $(".popItems").show();
            }
        },
        //常用校验封装
        validate: {
            //校验身份证号
            isCardNo:  function (value) {
                var reg = /^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$/;
                return reg.test(value);
            },
            //校验手机号
            isPhoneNo: function (value) {
                var pattern = /^1[3456789]\d{9}$/;
                return pattern.test(value);
            }

        },
        // 通用方法封装处理
        string: {
            // 判断字符串是否为空
            isEmpty: function (value) {
                if (value == null || this.trim(value) == "") {
                    return true;
                }
                return false;
            },
            // 判断一个字符串是否为非空串
            isNotEmpty: function (value) {
                return !$.common.isEmpty(value);
            },
            // 空对象转字符串
            nullToStr: function(value) {
                if ($.common.isEmpty(value)) {
                    return "-";
                }
                return value;
            },
            // 是否显示数据 为空默认为显示
            visible: function (value) {
                if ($.common.isEmpty(value) || value == true) {
                    return true;
                }
                return false;
            },
            // 空格截取
            trim: function (value) {
                if (value == null) {
                    return "";
                }
                return value.toString().replace(/(^\s*)|(\s*$)|\r|\n/g, "");
            },
            // 比较两个字符串（大小写敏感）
            equals: function (str, that) {
                return str == that;
            },
            // 比较两个字符串（大小写不敏感）
            equalsIgnoreCase: function (str, that) {
                return String(str).toUpperCase() === String(that).toUpperCase();
            },
            // 将字符串按指定字符分割
            split: function (str, sep, maxLen) {
                if ($.common.isEmpty(str)) {
                    return null;
                }
                var value = String(str).split(sep);
                return maxLen ? value.slice(0, maxLen - 1) : value;
            },
            // 字符串格式化(%s )
            sprintf: function (str) {
                var args = arguments, flag = true, i = 1;
                str = str.replace(/%s/g, function () {
                    var arg = args[i++];
                    if (typeof arg === 'undefined') {
                        flag = false;
                        return '';
                    }
                    return arg;
                });
                return flag ? str : '';
            },
            // 指定随机数返回
            random: function (min, max) {
                return Math.floor((Math.random() * max) + min);
            },
            // 判断字符串是否是以start开头
            startWith: function(value, start) {
                var reg = new RegExp("^" + start);
                return reg.test(value)
            },
            // 判断字符串是否是以end结尾
            endWith: function(value, end) {
                var reg = new RegExp(end + "$");
                return reg.test(value)
            },
            // 数组去重
            uniqueFn: function(array) {
                var result = [];
                var hashObj = {};
                for (var i = 0; i < array.length; i++) {
                    if (!hashObj[array[i]]) {
                        hashObj[array[i]] = true;
                        result.push(array[i]);
                    }
                }
                return result;
            }
        },
        //日期操作
        date:{
            // 获取年
            year: function () {
                return new Date().getFullYear();
            },
            // 获取月
            month: function (value) {
                return new Date().getMonth() + 1;
            },
            // 获取日
            day: function (value) {
                return new Date().getDate();
            },
        },
        //图片操作
        image:{
            /**
             *
             * @param newBlob Blob对象
             * @param fileName 文件名称
             * @returns {*}
             */
            blobToFile: function (newBlob, fileName) {
                newBlob.lastModifiedDate = new Date();
                newBlob.name = fileName;
                return newBlob;
            },
            /**
             *
             * @param base64Data 数据
             * @returns {Blob}
             */
            base64ToBlob:function (base64Data) {
                let arr = base64Data.split(','),
                    fileType = arr[0].match(/:(.*?);/)[1],
                    bstr = atob(arr[1]),
                    l = bstr.length,
                    u8Arr = new Uint8Array(l);

                while (l--) {
                    u8Arr[l] = bstr.charCodeAt(l);
                }
                return new Blob([u8Arr], {
                    type: fileType
                });
            }
        },
        //文件操作
        file:{

        },
        array:{
            /**
             * 判断数组中元素是否重复
             * @param array 数组
             * @returns {*}
             */
            isDuplicateValue: function (array) {
                for(var i=0; i<array.length; i++) {
                    for(var j=i+1; j<array.length;j++) {
                        if(array[i].sectionCode === array[j].sectionCode) {
                            return true
                        }
                    }
                }
            },
        }
    });
})(jQuery);

